package com.moyoutian.leetcode;

/**
 * 1221. 分割平衡字符串
 * <p>
 * <p>
 * 在一个 平衡字符串 中，'L' 和 'R' 字符的数量是相同的。
 * <p>
 * 给你一个平衡字符串 s，请你将它分割成尽可能多的平衡字符串。
 * <p>
 * 注意：分割得到的每个字符串都必须是平衡字符串。
 * <p>
 * 返回可以通过分割得到的平衡字符串的 最大数量 。
 * <p>
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "RLRRLLRLRL"
 * 输出：4
 * 解释：s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 * <p>
 * 示例 2：
 * <p>
 * 输入：s = "RLLLLRRRLR"
 * 输出：3
 * 解释：s 可以分割为 "RL"、"LLLRRR"、"LR" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 * <p>
 * 示例 3：
 * <p>
 * 输入：s = "LLLLRRRR"
 * 输出：1
 * 解释：s 只能保持原样 "LLLLRRRR".
 * <p>
 * 示例 4：
 * <p>
 * 输入：s = "RLRRRLLRLL"
 * 输出：2
 * 解释：s 可以分割为 "RL"、"RRRLLRLL" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 * <p>
 * <p>
 * <p>
 * 提示：
 * <p>
 * 1 <= s.length <= 1000
 * s[i] = 'L' 或 'R'
 * s 是一个 平衡 字符串
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/split-a-string-in-balanced-strings
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Demo1221 {

    public static void main(String[] args) {
        String s = "RLRRLLRLRL";
        System.out.println(balancedStringSplit(s));
    }

    public static int balancedStringSplit(String s) {
        if (s == null || s.length() == 0) {
            return -1;
        }

        //题目分析：
        //返回可以通过分割得到的平衡字符串的 最大数量，最大数量。
        //证明每最小的一次从头开始到当前，只要满足R和L的数量相等就需要统计一次，并从新计算即可。

        //R的数量，每次相等都需要从0计数
        int countR = 0;
        //L的数量，每次相等都需要从0计数
        int countL = 0;
        //返回他们相等的数量
        int re = 0;
        for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) == 'R') {
                countR++;
            } else {
                countL++;
            }
            //比较数量是否一致，一致就重新计算
            if (countR == countL) {
                re++;
                countR = 0;
                countL = 0;
            }
        }
        return re;
    }
}
